<?php

// 后台登录

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Session;


class LoginController extends Controller
{
	// 登录页面
	public function index()
    {
       return view("login");
    }
	
	
	
	// 验证账户信息
	public function checkLogin( Request $request )
    {
		$data = $request -> except('_token');
		
		if( empty($data['name']) )
		{
			return redirect('/login')->with( ['info'=>'请输入账号' ] );
		}
		
		$admin_name = DB::table('admin')
					// 账号
					-> where( 'name','=',$data['name'] )
					-> first();
		if( empty($admin_name) )
		{
			return redirect('/login')->with( ['info'=>'账号不存在','name'=>$data['name'] ] );
		}
		
		
		if( empty($data['pass']) )
		{
			return redirect('/login')->with( ['info'=>'请输入密码','name'=>$data['name'] ] );
		}
		
		$admin_info = DB::table('admin')
					// 账号
					-> where( 'name','=',$data['name'] )
					// 密码
					-> where( 'pass','=',$data['pass'] )
					-> first();
		// 验证通过
		if( $admin_info )
		{
			// 管理员id
			$admin_id = $admin_info->id;
			// 管理员id 放到 session 里
			Session::put('admin_id',$admin_id);
			
			// 管理员名字
			$current_admin = $this -> getAdminName( $admin_id );
			// 管理员名字 放到 session 里
			Session::put('admin_name',$current_admin->name ); 
			
			// 管理员 所有权限信息
			$all_auth = DB::table('node_admin as na')
				-> select('n.controller','n.func','n.name','n.desc','n.route')
				-> leftJoin('node as n','n.id','=','na.node_id')
				-> where('na.admin_id',$admin_id)
				-> orderBy('n.sort','desc')
				-> get();
			// 权限数组
			$auth = array();
			$cate_auth = array();
			$bar_auth = array();
			foreach( $all_auth as $key => $auth_info )
			{
				
				if( !isset($bar_auth[$auth_info->desc]) )
				{
					// 重新归类
					$cate_auth = array();
				}
				
				// 节点分类
				$cate_auth[$key]['controller'] = $auth_info -> controller;
				$cate_auth[$key]['func'] = $auth_info -> func;
				$cate_auth[$key]['name'] = $auth_info -> name;
				$cate_auth[$key]['desc'] = $auth_info -> desc;
				$cate_auth[$key]['route'] = $auth_info -> route;
				// 权限 分类导航
				$bar_auth[$auth_info->desc] = $cate_auth;
				
				// 用于获取全部节点 日后权限判断
				$auth[$key]['controller'] = $auth_info -> controller;
				$auth[$key]['func'] = $auth_info -> func;
				$auth[$key]['name'] = $auth_info -> name;
				$auth[$key]['desc'] = $auth_info -> desc;
				$auth[$key]['route'] = $auth_info -> route;
				
				
			}
			
			// 管理员权限 放到 session 里
			Session::put('auths',$auth ); 
			// 管理员权限导航 放到 session 里
			Session::put('bar_auth',$bar_auth ); 
			
			
			// 修改登录时间
			$res = 	DB::table('admin')
					-> where( 'id','=',$admin_id )
					-> update(['lasttime'=>date('Y-m-d H:i:s',time())]);
			
			// 跳转到 后台首页
			return redirect('/');
		}else
		{
			// 验证失败
			// 回到登录页面
			return redirect('/login')->with( ['info'=>'密码不正确','name'=>$data['name'] ] );
		}
		
    }
	
	// 退出登录
	public function loginOut()
	{
		// 清除session
		Session::forget('admin_id');
		Session::forget('admin_name');
		Session::forget('auths');
		
		// 跳转到登录页
		return redirect('/login');
	}
	
}
